Описание
Создает новый объект QueryDef в указанном объекте
Connection или Database.
Set запрос = объект.CreateQueryDef (имя, строкаSQL)
Параметры
запрос
Объектная переменная, представляющая
создаваемый объект QueryDef.
объект
Объектная переменная,
представляющая открытый объект Connection или Database, который
содержит новый объект QueryDef.
имя
Необязательный.
Выражение или переменная типа Variant (подтип String), содержащая
уникальное имя нового объекта
QueryDef.
строкаSQL
Необязательный. Выражение или переменная
типа Variant (подтип String), представляющая инструкцию
SQL, которая определяет объект QueryDef. Если данный аргумент
будет опущен, то можно определить объект QueryDef путем задания значения
его свойства SQL до или после добавления созданного объекта в
семейство.
Замечания
В рабочей области ядра Microsoft Jet, если при создании
объекта QueryDef для имени задано любое значение, кроме пустой строки, то
созданный объект QueryDef будет автоматически добавлен в семейство
QueryDefs. В рабочей области ODBCDirect объекты QueryDef
всегда являются временными.
В рабочей области ODBCDirect аргумент
строкаSQL может задавать как инструкцию SQLТ так и сохраненную
процедуру Microsoft SQL Server вместе с ее параметрами.
Если объект,
определяемый аргументом имя, уже является компонентом семейства
QueryDefs, возникает ошибка выполнения. Пользователь имеет возможность
создать временный объект QueryDef, задавая пустую строку в аргументе имя
при вызове метода CreateQueryDef. Тот же результат будет получен, если
задать пустую строку как значение свойства Name нового объекта
QueryDef. Временные объекты QueryDef полезны в ситуации, когда
требуется повторно выполнять динамические инструкции SQL без создания
постоянных объектов в семействе QueryDefs. Временный объект
QueryDef нельзя добавить ни в одно семейство, поскольку пустая строка не
является допустимым значением имени постоянного объекта QueryDef. Для
созданного объекта QueryDef всегда имеется возможность задать значения
свойств Name и SQL, после чего данный объект будет добавлен в
семейство QueryDefs.
Для выполнения инструкции SQL,
содержащейся в объекте QueryDef, следует вызвать метод Execute или
OpenRecordset.
Использование объектов QueryDef является лучшим
способом выполнения запросов к серверу SQL в базах данных
ODBC.
Для удаления объекта QueryDef из семейства
QueryDefs в базе данных Microsoft Jet следует применить метод
Delete к семейству. В базе данных ODBCDirect следует вызвать метод
Close для объекта QueryDef.
Пример
Следующая программа использует метод CreateQueryDef для
создания и выполнения как временного, так и постоянного объекта QueryDef.
Для выполнения этой процедуры требуется функция GetrstTemp.
Sub CreateQueryDefX()
Dim dbsNorthwind As Database
Dim qdfTemp As QueryDef
Dim qdfNew As QueryDef
Set dbsNorthwind = OpenDatabase("Борей.mdb")
With dbsNorthwind
' Создает временный объект QueryDef.
Set qdfTemp = .CreateQueryDef("", "SELECT * FROM Сотрудники")
' Открывает объект Recordset и печатает отчет.
GetrstTemp qdfTemp
' Создает постоянный объект QueryDef.
Set qdfNew = .CreateQueryDef("NewQueryDef", "SELECT * FROM Типы")
' Открывает объект Recordset и печатает отчет.
GetrstTemp qdfNew
' Удаляет объект QueryDef, созданный только для демонстрации.
.QueryDefs.Delete qdfNew.Name
.Close
End With
End Sub
Function GetrstTemp(qdfTemp As QueryDef)
Dim rstTemp As Recordset
With qdfTemp
Debug.Print .Name
Debug.Print " " & .SQL
' Открывает объект Recordset для объекта QueryDef.
Set rstTemp = .OpenRecordset(dbOpenSnapshot)
With rstTemp
' Заполняет объект Recordset и печатает число записей.
.MoveLast
Debug.Print " Число записей = " & .RecordCount
Debug.Print
.Close
End With
End With
End Function